/**
 * 图片URL处理工具
 * 用于处理图片地址转换，确保微信小程序可以正常显示HTTPS图片
 */

// HTTPS域名配置
const HTTPS_DOMAIN = 'https://qzhenjewllery.xin'

// 开发环境检测
const isDevelopment = false // 在开发环境下设置为true，生产环境设置为false

/**
 * 转换图片URL为HTTPS地址
 * @param {string} url - 原始图片URL
 * @returns {string} 转换后的HTTPS图片URL
 */
export function convertToHttpsImageUrl(url) {
  // 如果URL为空或无效，返回默认图片
  if (!url || typeof url !== 'string') {
    return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
  }

  // 开发环境下，如果是本地服务器URL，直接返回不转换
  if (isDevelopment && (url.includes('localhost:3129') || url.includes('127.0.0.1:3129'))) {
    return url
  }

  // 如果已经是HTTPS地址且域名正确，直接返回
  if (url.startsWith(HTTPS_DOMAIN)) {
    return url
  }

  // 如果是相对路径（以/static开头），直接返回
  if (url.startsWith('/static/')) {
    return url
  }

  // 如果是完整的HTTP地址，提取路径部分并替换为HTTPS域名
  if (url.startsWith('http://')) {
    try {
      // 使用字符串方法提取路径，兼容微信小程序环境
      const protocolIndex = url.indexOf('://')
      const domainStartIndex = protocolIndex + 3
      const pathStartIndex = url.indexOf('/', domainStartIndex)

      if (pathStartIndex !== -1) {
        const pathname = url.substring(pathStartIndex)
        // 检查是否是服务器上传的图片路径
        if (pathname.startsWith('/uploads/')) {
          return `${HTTPS_DOMAIN}${pathname}`
        }
        return `${HTTPS_DOMAIN}${pathname}`
      } else {
        console.warn('无法从URL中提取路径:', url)
        return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
      }
    } catch (error) {
      console.warn('图片URL解析失败:', url, error)
      return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
    }
  }

  // 如果是服务器IP地址的HTTP URL，也进行转换
  if (url.includes('39.107.154.148:3129') || url.includes('localhost:3129')) {
    try {
      const uploadsIndex = url.indexOf('/uploads/')
      if (uploadsIndex !== -1) {
        const pathname = url.substring(uploadsIndex)
        return `${HTTPS_DOMAIN}${pathname}`
      }
    } catch (error) {
      console.warn('服务器图片URL解析失败:', url, error)
    }
  }

  // 如果是其他HTTPS地址，提取路径部分并替换域名
  if (url.startsWith('https://')) {
    try {
      // 使用字符串方法提取路径，兼容微信小程序环境
      const protocolIndex = url.indexOf('://')
      const domainStartIndex = protocolIndex + 3
      const pathStartIndex = url.indexOf('/', domainStartIndex)

      if (pathStartIndex !== -1) {
        const pathname = url.substring(pathStartIndex)
        return `${HTTPS_DOMAIN}${pathname}`
      } else {
        console.warn('无法从URL中提取路径:', url)
        return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
      }
    } catch (error) {
      console.warn('图片URL解析失败:', url, error)
      return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
    }
  }

  // 如果是以/uploads开头的路径，直接拼接HTTPS域名
  if (url.startsWith('/uploads/')) {
    return `${HTTPS_DOMAIN}${url}`
  }

  // 其他情况，尝试作为相对路径处理
  if (url.startsWith('/')) {
    return `${HTTPS_DOMAIN}${url}`
  }

  // 如果都不匹配，返回默认图片
  console.warn('无法处理的图片URL格式:', url)
  return '/static/icons/08ff0bd53a8643cd360e68f761bc2c25.jpg'
}

/**
 * 批量转换图片URL数组
 * @param {Array} urls - 图片URL数组
 * @returns {Array} 转换后的HTTPS图片URL数组
 */
export function convertImageUrlsArray(urls) {
  if (!Array.isArray(urls)) {
    return []
  }
  
  return urls.map(url => convertToHttpsImageUrl(url))
}

/**
 * 处理商品对象的图片URL
 * @param {Object} product - 商品对象
 * @returns {Object} 处理后的商品对象
 */
export function processProductImages(product) {
  if (!product || typeof product !== 'object') {
    return product
  }

  const processedProduct = { ...product }

  // 处理主图
  if (processedProduct.main_image_url) {
    processedProduct.main_image_url = convertToHttpsImageUrl(processedProduct.main_image_url)
  }

  // 处理轮播图数组
  if (processedProduct.gallery_image_urls) {
    processedProduct.gallery_image_urls = convertImageUrlsArray(processedProduct.gallery_image_urls)
  }

  // 处理其他可能的图片字段
  if (processedProduct.image) {
    processedProduct.image = convertToHttpsImageUrl(processedProduct.image)
  }

  if (processedProduct.thumbnail) {
    processedProduct.thumbnail = convertToHttpsImageUrl(processedProduct.thumbnail)
  }

  return processedProduct
}

/**
 * 批量处理商品数组的图片URL
 * @param {Array} products - 商品数组
 * @returns {Array} 处理后的商品数组
 */
export function processProductsImages(products) {
  if (!Array.isArray(products)) {
    return []
  }

  return products.map(product => processProductImages(product))
}

// 默认导出
export default {
  convertToHttpsImageUrl,
  convertImageUrlsArray,
  processProductImages,
  processProductsImages
}
